//1.基础的位运算
//& 有0就为0 ｜有1就为1 ^相同为0相异为1/无进位相加
//2. 给一个数n，确定它的二进制位表示中第x位为0还是1
//让这一位&上一个1  n>>x & 1.  (对于运算的优先级的问题，能加括号就加括号，这样就不用考虑了)
//约定一个二进制的数，最右边位最低位，并且下标从0开始，这样的话，比如我想把第三位移动最低位的只需要移动下标位就可以了
// 0  1  0  0  0  1  1  1
// 7  6  5  4  3  2  1  0
//3.将一个数n的二进制位的第x位修改为1 
// (1<<x) | n
//4.将一个数n的二进制位的第x位修改为0
// ~(1<<x) | n.  1左移x位取反后再｜n
//5. 位图的思想
//本质是一个哈希表 一个变量的二进制位的每一个比特位表示信息
//6.提取一个数n的二进制位的最右边的1
//n & -n (-n的意思是将最右边的1的左侧部分取反)
//7.干掉一个数n的二进制位的最右边的1
// n & n-1
//8 ^的运算率
//a ^ 0 =a.  a^ a=0(一个数出现哦然为0 奇数次为1，消消乐) a^b^c=a^ (b^c)